/**
 * base64解码  支持中文
 * @param str string 要解码的base64字符串
 * @return string
 */
$.b64Dec = function (str) {
	let rtn='', dec='', i=0, c1, c2, c3, e1, e2, e3, e4;
	str = str.replace(/[^A-Za-z0-9+\/=]/g, "");
	while (i < str.length) {
		e1=$.b64Str.indexOf(str[i++]);  e2=$.b64Str.indexOf(str[i++]);
		e3=$.b64Str.indexOf(str[i++]);  e4=$.b64Str.indexOf(str[i++]);
		c1=(e1<<2)|(e2>>4); c2=((e2&15)<<4)|(e3>>2); c3=((e3&3)<<6)|e4;
		dec += String.fromCharCode(c1);
		if (e3!==64) dec += String.fromCharCode(c2);
		if (e4!==64) dec += String.fromCharCode(c3);
	}
	for(let n=0, x; n<dec.length; n++) {
		if((x=dec.charCodeAt(n))<128) rtn += String.fromCharCode(x);
		else if((x>191) && (x<224)){
			rtn += String.fromCharCode(((x&31)<<6) | (dec.charCodeAt(++n)&63));
		}
		else {
			let x2=dec.charCodeAt(++n), x3=dec.charCodeAt(++n);
			rtn += String.fromCharCode(((x&15)<<12) | ((x2&63)<<6) | (x3&63));
		}
	}
	return rtn;
};
